package com.project.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.project.bean.PowerBean;
import com.project.bean.UserBean;

import java.util.List;

public interface IUserService {

    /**
     * 登录
     * @param name 账号
     * @param pwd 密码
     * @return 登陆用户
     * 1、根据账号和密码查询用户，如果查询失败，返回null，查询成功，返回登陆用户对象。
     */
    UserBean login(String name,String pwd);

    /**
     * 添加用户
     * 添加用户， 同时添加该用户拥有的角色
     * @param userName 用户名
     * @param realName 真实姓名
     * @param roleIdList 角色id集合
     */
    void addUser(String userName, String realName, List<Integer> roleIdList);
    /**
     * 根据角色Id集合查询权限
     * 根据角色Id集合查询权限，权限去重
     * @param roleIdList 角色Id集合
     * @return 权限集合
     */
    List<PowerBean> findByRoleIdList(List<Integer> roleIdList);

    /**
     * 删除用户
     * 删除用户，同时删除用户拥有的角色记录
     * @param id 用户id
     */
    void delUser(Integer id);

    /**
     * 分页动态查询用户信息
     * @param pageNO 页码
     * @param userName 用户名
     * @return 分页对象
     */
    IPage<UserBean> cutByUser(Integer pageNO,String userName);

    /**
     * 查看用户角色
     * 根据用户id，查询用户信息，并查询用户拥有角色集合
     * @param userId 用户Id
     * @return 用户对象
     */
    UserBean findById(Integer userId);

    /**
     * 修改用户角色
     * @param userId 用户id
     * @param roleIdList 角色id集合
     */
    void update(Integer userId,List<Integer> roleIdList);

    /**
     * 修改密码
     * 根据用户id修改密码
     * @param userId 用户id
     * @param newPwd 新密码
     */
    void updatePwd(Integer userId,String newPwd);

    /**
     * 根据用户id查询用户及用户拥有的权限
     * @param userId 用户id
     * @return 用户对象
     */
    UserBean findByPower(Integer userId);
}
